www.gusucode.com > VC++ 酒店管理系统-源码程序 > VC++ 酒店管理系统-源码程序/code/hotel2003/QQ.cpp
//Download by http://www.NewXing.com // QQ.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "QQ.h" #include "MainFrm.h" #include "QQDoc.h" #include "QQView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define UNIQE_NAME "{1C6780D1-4078-41fa-8F5F-8FCC82BD15DD}" #include ".\\SplashWnd\\LjxWnd.h" ///////////////////////////////////////////////////////////////////////////// // CQQApp BEGIN_MESSAGE_MAP(CQQApp, CWinApp) //{{AFX_MSG_MAP(CQQApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP // Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // Standard print setup command ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CQQApp construction CQQApp::CQQApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CQQApp object CQQApp theApp; ///////////////////////////////////////////////////////////////////////////// // CQQApp initialization BOOL CQQApp::InitInstance() { /* * 自动安装ODBC数据源 */ SetupODBCDateSource(); ///////*************保证当前只有一个实例在运行*********////////// m_hOneInstance = ::CreateMutex( NULL,FALSE,UNIQE_NAME);//创建一个互斥体 if (GetLastError() == ERROR_ALREADY_EXISTS ) { AfxMessageBox( "应用程序已经在运行!" ); return FALSE;//不实现该实例 } /*------------------------------------------------------------*/ AfxEnableControlContainer(); //容器支持 //===================加载皮肤并且设置皮肤窗口================*/ VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), "QQ" , NULL, NULL ) ); VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle() , "SKINMAGIC" ,"SKINMAGIC") ); VERIFY( 1 == SetDialogSkin( "Dialog" ) ); /*==========================END==============================*/ GetCtrlManager().InstallHook();//使所有控件浮动 ////////////////////////////////////////////////////////////////////////// //增加的闪屏效果代码 CLjxWnd *ljxljx=new CLjxWnd; //建立一个新窗口对象 ljxljx->CreatLjxWnd (); //创建窗口 ljxljx->CenterWindow (); //在屏幕中央 ljxljx->ShowWindow (SW_SHOW); //显示窗口 ljxljx->UpdateWindow (); //更新窗口,激活OnPait函数 Sleep(100); //等待函数指定秒钟 if (ljxljx!=NULL) ljxljx->SendMessage (WM_CLOSE); //关闭窗口 // // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif // Change the registry key under which our settings are stored. // TODO: You should modify this string to be something appropriate // such as the name of your company or organization. SetRegistryKey(_T("Local AppWizard-Generated Applications")); LoadStdProfileSettings(); // Load standard INI file options (including MRU) // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CQQDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CQQView)); AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The one and only window has been initialized, so show and update it. HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME2); m_pMainWnd->SetIcon(m_hIcon,true); m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->CenterWindow(); m_pMainWnd->UpdateWindow(); m_pMainWnd->SetWindowText("酒店管理系统2003"); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About #include ".\\email\\HyperLink.h" class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) virtual void OnOK(); virtual BOOL OnInitDialog(); //}}AFX_MSG CHyperLink m_EMailLink; DECLARE_MESSAGE_MAP() }; #define IDS_MAILADDR _T("mailto:kuge3907@sina.com") CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP DDX_Control(pDX, IDC_EMAILLINK, m_EMailLink); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CQQApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } ///////////////////////////////////////////////////////////////////////////// // CQQApp message handlers void CAboutDlg::OnOK() { // TODO: Add extra validation here new CFaderWnd(this,2000);//实现渐隐效果 EndDialog(IDOK);//关闭对话框 // CDialog::OnOK(); } BOOL CAboutDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_EMailLink.SetURL(IDS_MAILADDR); m_EMailLink.SetUnderline(CHyperLink::ulAlways); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } int CQQApp::ExitInstance() { // TODO: Add your specialized code here and/or call the base class CloseHandle( m_hOneInstance ); ExitSkinMagicLib();//卸载皮肤库 return CWinApp::ExitInstance(); } void CQQApp::SetupODBCDateSource()//用编程的方式自动完成ODBC数据库的安装 {//自动安装ODBC数据源 //仍然有些问题,数据源没有具体的路径bug!!!!!!!! // 需要继续修改 [6/4/2003] // CString strDBPath; // strDBPath=GetDBPath();//获得数据源的路径 // CString strAtturbute;//DataDirectory // strAtturbute.Format( // "DSN=酒店管理系统\0" // "Description=New Access Data Source\0" // "FileType=Access\0" // "DBQ=%s酒店管理系统.mdb\0" // strDBPath // );//设置ODBC的属性 //修改成下面的样子后问题解决,可以自动在软件启动的时候安装ODBC数据源 //但是要求"酒店管理系统.mdb"数据库要和应用程序放在通一个目录下 // [6/4/2003-22:40] //主要的修改的地方: //相对路径的获取,先前采用的是调用GetDBPath()的方法 //后面采用直接用相对路径的方式".\\"(当前目录) //SQLConfigDataSource()的调用方法比较特殊 /************************************************************************/ // 函数功能说明:实现ODBC数据源的自动安装; /* SQLConfigDataSource()的具体用法说明 1. HWND hwndParent:调用ConfigDataSource的窗口句柄 若hwndParent取值为:m_pMainWnd->m_hWnd,则在App启动的时候弹出 创建数据源的对话框要求用户自己添加数据源 若若hwndParent取值为:NULL,则系统自动的创建数据源, 不会弹出创建数据源的对话框; 2. WORD fRequest: ODBC_ADD_DSN :添加用户数据源 ODBC_ADD_SYS_DSN:添加系统用户数据源 3. 第三个参数:驱动程序的描叙 4. 数据库的具体属性 /************************************************************************/ SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", "DSN=酒店管理系统\0" "Description=酒店管理系统的数据源\0" "FileType=Access\0" "DBQ=.\\酒店管理系统.mdb\0" ); } CString CQQApp::GetDBPath() {//获得数据库的路径 CString szDBPath; TCHAR pathtemp[255]; ::GetModuleFileName(AfxGetApp()->m_hInstance,pathtemp,255); szDBPath=pathtemp;//获得路径名称 int n=szDBPath.ReverseFind('\\'); return szDBPath.Left(n+1); }